#define _CRT_SECURE_NO_WARNINGS
#include"SeqList.h"
#include"Contact.h"
//通讯录数据的初始化:
void ContactInit(Contact* con)
{
	SLInit(con);
}
//通讯录的销毁:
void ContactDestroy(Contact* con)
{
	SLDestroy(con);
}
//插入数据:
void ContactAdd(Contact* con)
{
	peoinfo temp;//创建一个联系人
	printf("请输入姓名:>");
	scanf("%s", temp.name);

	printf("请输入性别:>");
	scanf("%s", temp.gender);

	printf("请输入年龄:>");
	scanf("%d", &temp.age);

	printf("请输入电话:>");
	scanf("%s", temp.tel);

	printf("请输入地址:>");
	scanf("%s", temp.addr);
	//我们选择尾插:
	SLPushBack(con, temp);
}
//打印通讯录:
void ContactPrint(Contact* con)
{
	//如果说size等于0说明通讯录没有人:
	if (con->size == 0)
	{
		printf("你没有通讯录好友!\n");
	}
	else
	{
		printf("你的通讯录信息为:\n");
		//第一行打印表头：姓名 性别 年龄 电话 地址
		printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
		printf("%s %s %s %s %s\n", "姓名", "性别", "年龄", "电话", "地址");
		//遍历整个通讯录，打印每个联系人的信息:
		for (int i = 0; i < con->size; i++)
		{
			printf("%-4s %-4s %-4d %-4s %-4s\n",
				con->arr[i].name,
				con->arr[i].gender,
				con->arr[i].age,
				con->arr[i].tel,
				con->arr[i].addr);
		}
		printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
	}
}
//删除通讯录的联系人：
//根据姓名查找联系人:(当然还可以通过性别，年龄，电话，地址来查找)
int FindByName(Contact* con, char* name)
{
	//遍历整个通讯录:
	for (int i = 0; i < con->size; i++)
	{
		//找到了
		if (strcmp(name, con->arr[i].name) == 0)
		{
			return i;
		}
	}
	//没有找到:
	return -1;
}
//删除联系人
void ContactDel(Contact* con)
{
	//查找联系人
	char name[NAME_MAX];
	printf("请输入你要删除的联系人的姓名:>");
	scanf("%s", name);
	int find=FindByName(con, name);
	//如果没有找到:
	if (find < 0)
	{
		printf("没有找到该联系人,删除失败\n");
		return;
	}
	//找到了:
	SLErase(con, find);
	printf("删除成功!\n");
}
//修改联系人数据:
void ContactModify(Contact* con)
{
	//先查找你要修改的联系人:
	char name[NAME_MAX];
	printf("请输入你要修改的联系人的姓名:>");
	scanf("%s", name);
	//根据用户输入的姓名进行查找:
	int find = FindByName(con, name);
	if (find < 0)
	{
		//没有找到
		printf("你输入的联系人不存在！\n");
		return;
	}
	//找到了
	printf("请输入新的姓名:>");
	scanf("%s", con->arr[find].name);

	printf("请输入新的性别:>");
	scanf("%s", con->arr[find].gender);

	printf("请输入新的年龄:>");
	scanf("%d", &con->arr[find].age);

	printf("请输入新的电话:>");
	scanf("%s", con->arr[find].tel);

	printf("请输入新的地址:>");
	scanf("%s", con->arr[find].addr);

	printf("修改成功！\n");
}

//通讯录查找:
void ContactFind(Contact* con)
{
	char name[NAME_MAX];
	printf("请输入你要查找的联系人的姓名:>");
	scanf("%s", name);
	int find = FindByName(con, name);
	if (find < 0)
	{
		printf("你输入的联系人不存在！\n");
		return;
	}
	printf("你查找的联系人的姓名为:>%s\n",con->arr[find].name);
	printf("你查找的联系人的性别为:>%s\n",con->arr[find].gender);
	printf("你查找的联系人的年龄为:>%d\n",con->arr[find].age);
	printf("你查找的联系人的电话为:>%s\n",con->arr[find].tel);
	printf("你查找的联系人的地址为:>%s\n",con->arr[find].addr);
}

//保存信息:
void SaveData(Contact* con)
{
	assert(con);
	FILE*pf=fopen("test.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return;
	}
	for (int i = 0; i < con->size; i++)
	{
		fprintf(pf, "%s %s %d %s %s\n", con->arr[i].name, con->arr[i].gender, con->arr[i].age, con->arr[i].tel, con->arr[i].addr);
	}
	fclose(pf);
	pf = NULL;

}
